package eva.savant.business.ventas.view

import eva.savant.businessobject.vt.Venta
import eva.savant.businessobject.vt.Cliente
import eva.savant.businessobject.vt.VentaDetalle

import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped
import javax.annotation.PostConstruct
import javax.faces.convert.Converter

@SessionScoped
@ManagedBean(name = 'IIVentasClienteMaterial')
public class IIVentasClienteMaterial extends Bean {

  Date dateIni, dateEnd

  @PostConstruct
  public void cleanEntity() {

    lsEntity = null

    entity = new Venta()

    dateIni= dateEnd= new Date()
  }

  public List findLsEntity() {

    dateIni= toStartDay(dateIni); dateEnd= toMidnight(dateEnd); form= true

    def q= entity.cliente?.id != null? 'and venta.cliente.id=?' : ''

    def qA= "sum(importe), sum(descuento), sum(total): venta.operacionId > 0 and venta.fecha between ? and ? ${q}"

    def qB= "venta.id, venta.fecha, venta.cliente.codigo, venta.cliente.persona.nombre, material.codigo, material.nombre, cantidad, importe, descuento, total: venta.operacionId > 0 and venta.fecha between ? and ? ${q} order by venta.fecha, venta.id"


    def    d= entity.cliente?.id != null?  get(VentaDetalle, qA, dateIni, dateEnd, entity.cliente?.id) :  get(VentaDetalle, qA, dateIni, dateEnd)

    lsEntity= entity.cliente?.id != null? find(VentaDetalle, qB, dateIni, dateEnd, entity.cliente?.id) : find(VentaDetalle, qB, dateIni, dateEnd)


    entity.importe= d[0]; entity.descuento= d[1]; entity.total= d[2]

    return lsEntity
  }

  public List complete(String value) { return completeLike(Cliente.class,'persona.nombre',value) }

  public Converter getConverter() { return converterLike(Cliente.class) }
}
